Differences in user interests and preferences offer a challenge to developers of software applications. For example, when retrieving email messages some users make meticulous use of folder structures to file and find email, whereas others keep most, if not all, email messages in one folder, typically the inbox, and use search or sorting to find needed documents. Because of these differences, attempts to add intelligence to software applications can often fail. What may seem like a helpful program feature to some users may be bothersome to others, what is important to one person may not be important to another, and what is currently important to that person may change over time. Without personalized information, application programs typically cater to the lowest common denominator (e.g., alphabetical listing of names for an auto-completion program, a presentation of search results based on lexical similarity).
Accordingly, software developers have begun constructing profiles of user interests and providing application program interfaces to access these profiles so that the application can have tailored behavior. Such personal information management (PIM) applications, however, are not free from the problem posed by user differences. Previous approaches to solving this problem include prompting the user for a series of terms and categories of interest, tracking user web searches, and various machine-learning techniques. User entry of important topics, however, can be time-consuming and often inaccurate: users may not remember or may remember inaccurately those topics that are actually of importance. Other users do not want to bother with the machine-learning process, choosing to forego personalized application behavior rather than to sacrifice valuable time supplying data to their computer system. There remains a need, therefore, for an automated system and method for identifying and tracking the personal interests of a user and for enabling application programs to make use of these personal interests in order to provide program behavior tailored to the user.